package com.zkteco.fingerprint.repository;

import com.zkteco.fingerprint.entity.FingerprintData;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;

/**
 * 指纹数据访问层
 */
@Repository
public interface FingerprintDataRepository extends JpaRepository<FingerprintData, Long> {
    
    /**
     * 根据用户ID查找指纹数据
     */
    Optional<FingerprintData> findByUserId(String userId);
    
    /**
     * 根据用户名查找指纹数据
     */
    List<FingerprintData> findByUserName(String userName);
    
    /**
     * 查找所有启用状态的指纹数据
     */
    @Query("SELECT f FROM FingerprintData f WHERE f.status = 1")
    List<FingerprintData> findAllActive();
    
    /**
     * 根据用户ID删除指纹数据
     */
    void deleteByUserId(String userId);
    
    /**
     * 检查用户ID是否已存在
     */
    boolean existsByUserId(String userId);
    
    /**
     * 统计总记录数
     */
    @Query("SELECT COUNT(f) FROM FingerprintData f WHERE f.status = 1")
    Long countActive();
    
    /**
     * 根据状态统计记录数
     */
    long countByStatus(int status);
} 